package com.service.impl;

import com.mapper.InventoryMapper;
import com.mapper.SupplierMapper;
import com.pojo.Inventory;
import com.pojo.Supplier;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * (Supplier)表服务实现类
 *
 * @author makejava
 * @version 1.0
 * @since 2022-04-08 12:33:27
 */
@Service("supplierService")
public class SupplierServiceImpl {
    @Resource
    private SupplierMapper supplierMapper;

    @Resource
    private InventoryMapper inventoryMapper;

    /**
     * 根据模糊条件查询总个数
     *
     * @param name 查询条件
     * @return 返回查询到的总个数
     */
    public Map<String, Object> selectForCount(String name) {
        Map<String, Object> map = new HashMap<>();
        // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
        map.put("code", 200);
        map.put("msg", "查询成功");
        map.put("data", this.supplierMapper.selectForCount(name));
        return map;
    }

    /**
     * 查询所有数据
     *
     * @return 返回所有数据
     */
    public List<Supplier> selectAll() {
        return supplierMapper.selectAll();
    }

    /**
     * 通过ID查询供应商单条数据
     */
    public Map<String, Object> selectById(HttpServletRequest request) {
        String Sno = (String) request.getSession().getAttribute("Sno");
        Map<String, Object> map = new HashMap<>();
        // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
        map.put("code", 200);
        map.put("msg", "查询成功");
        map.put("data", this.supplierMapper.selectById(Sno));
        return map;
    }

    /**
     * 通过ID查询供应商供应的所有批次
     */
    public List<Inventory> querySpecificSupplierPDbatches(HttpServletRequest request) {
        String Sno = (String) request.getSession().getAttribute("Sno");
        request.removeAttribute(Sno);
        return inventoryMapper.querySpecificSupplierPDbatches(Sno);
    }

    /**
     * 新增数据
     *
     * @param supplier 实例对象
     * @return 实例对象
     */
    public Map<String, Object> insert(Supplier supplier) {
        // UUID.randomUUID()  返回内容：asd21321-ewrewrew213213-123213zsad-123asdasd这样的形态
        this.supplierMapper.insert(supplier);
        Map<String, Object> map = new HashMap<>();
        map.put("code", 200);   // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
        map.put("msg", "新增成功");
        return map;
    }

    /**
     * 通过ID查询单条数据
     *
     * @param supplier 实例对象
     * @return 实例对象
     */
    public Map<String, Object> updateById(Supplier supplier) {
        this.supplierMapper.updateById(supplier);
        Map<String, Object> map = new HashMap<>();
        map.put("code", 200);   // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
        map.put("msg", "更新成功");
        return map;
    }

    /**
     * 通过主键删除数据
     *
     * @param no 主键
     * @return 是否成功
     */
    public Map<String, Object> deleteById(String no) {
        this.supplierMapper.deleteById(no);
        Map<String, Object> map = new HashMap<>();
        map.put("code", 200);   // 前端端分离时，前端人员会首先判断code值是否满足200，如果不是200，则提醒用户失败
        map.put("msg", "删除成功");
        return map;
    }
}